package Lexico;

public final class Clasificador {

  //Metodo de Clase
  public static IdChar getId(char c) {
    if(c == ' ' || c == '\t') {
      return IdChar.blanco;
    }
    else if(c == '\n' || c == '\r') {
      return IdChar.nueva_linea;
    }
    else if(c == 'U' || c == 'u') {
      return IdChar.U;
    }
    else if(c == 'I' || c == 'i') {
      return IdChar.I;
    }
    else if(c == 'L' || c == 'l') {
      return IdChar.L;
    }
    else if((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {
      return IdChar.letra;
    }
    else if(c >= '0' && c <= '9') {
      return IdChar.digito;
    }
    else if(c == '!') {
      return IdChar.exclamacion;
    }
    else if(c == '=') {
      return IdChar.igual;
    }
    else if(c == ':') {
      return IdChar.dos_puntos;
    }
    else if(c == '>') {
      return IdChar.mayor;
    }
    else if(c == '<') {
      return IdChar.menor;
    }
    else if(c == '-'){
      return IdChar.menos;
    }
    else if(c == '\''){
      return IdChar.comilla;
    }
    else if(c == '*') {
      return IdChar.asterisco;
    }
    else if(c == '('){
      return IdChar.parentesis_abre;
    }
    else if(c == ')'){
      return IdChar.parentesis_cierra;
    }
    else if(c == '+' || c == '/' || c == '{' || c == '}' || c == ',' ||
            c == '.' || c == ';' || c == '\"' || c == '?' || c == '#' || c == '@' || c == '%') {
      return IdChar.otro;
    }
    else if(c == '\uffff')
        return IdChar.eof;
    return IdChar.ilegal;
  }

  public static String traducir(char c) {
    if(c == ' ') {
      return "Caracter --> Espacio en Blanco";
    }
    else if(c == '\t') {
      return "Caracter --> Tabulación";
    }
    else if(c == '\n') {
      return "Caracter --> Nueva Línea";
    }
    return String.valueOf(c);
  }
}
